import java.util.*;
/*给你一个整数数组 nums。

特殊三元组 定义为满足以下条件的下标三元组 (i, j, k)：

0 <= i < j < k < n，其中 n = nums.length
nums[i] == nums[j] * 2
nums[k] == nums[j] * 2
返回数组中 特殊三元组 的总数。
输入： nums = [6,3,6]

输出： 1
由于答案可能非常大，请返回结果对 109 + 7 取余数后的值。*/
public class Text {
    public static int seekgroup(int[] nums) {
        int max = 0;
        int med = 1_000_000_007;
        // 获取最大数组长度
        long count = 0;
        for (int x : nums) {
            max = Math.max(max, x);
        }
        int[] arr = new int[max + 1];
        // 记录每个数的频率
        for (int x : nums) {
            arr[x]++;
        }
        int[] len = new int[max + 1]; // 记录左边相同数
        for (int y : nums) {
            arr[y]--;
            if (y * 2 <= max) {
                count += (long) arr[y * 2] * (long) len[y * 2];
            }
            len[y]++;
        }
        return (int) (count % med);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = sc.nextInt();
        }
        int result = seekgroup(nums);
        System.out.println(result);
    }
}